package datasource

import (
	"gitee.com/yanggit123/tool/module"
	"github.com/redis/go-redis/v9"
)

var rdb redis.UniversalClient

// 如果指定了 MasterName 选项，则返回 FailoverClient 哨兵客户端。
// 如果 Addrs 是 2 个以上的地址，则返回 ClusterClient 集群客户端。
// 其他情况，返回 Client 单节点客户端。
func EnableGoRedis(conf module.RedisConf) error {
	addr := []string{}
	if len(conf.SentinelAddr) != 0 { //哨兵模式
		addr = conf.SentinelAddr
		if conf.MasterName == "" {
			conf.MasterName = "mymaster"
		}
	} else if len(conf.ClusterAddr) != 0 {
		addr = conf.ClusterAddr
	} else {
		addr = []string{conf.Host}
	}
	rdb = redis.NewUniversalClient(&redis.UniversalOptions{
		Addrs:            addr,
		DB:               conf.DB,
		Password:         conf.Password,
		SentinelPassword: conf.Password,
		MaxIdleConns:     conf.MaxIdle,
		MaxActiveConns:   conf.MaxActive,
		ConnMaxIdleTime:  conf.IdleTimeout,
		MasterName:       conf.MasterName,
	})
	return nil
}
func GetGoRedisDB() redis.UniversalClient {
	return rdb
}
